package jmine.tec.utils.spring;

/**
 * Interface to denote a service that can lookup other objects
 * 
 * @author takeshi
 * @param <E> type
 */
public interface InstanceResolver<E> {

    /**
     * Gets the instance from this resolver.
     * 
     * @return {@link Object}
     */
    E getInstance();

    /**
     * Sets the instance for this resolver.
     * 
     * @param object {@link Object}
     */
    void setInstance(final E object);

    /**
     * Removes the currently associated instance.
     */
    void clearCurrentInstance();

    /**
     * Removes all the instances.
     */
    void clear();
}
